﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Proveedores.Servidor1;

namespace Proveedores
{   
    public partial class CrearFactura : System.Web.UI.Page
    {
        DataTable datos = new DataTable();
        Service1 servidor = new Service1();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["NombreUsuario"] == null)
                Response.Redirect("Login.aspx");
            servidor = (Service1)Session["Server"];
            if (!Page.IsPostBack)
            {
                if (Session["Server"] != null)
                {
                    string empresa = Session["NombreEmpresaUsuario"].ToString();
                    List<string> socios = servidor.ConsultarEmpresa(6, empresa).ToList();
                    List<string> articulos = servidor.ConsultarEmpresa(4, empresa).ToList();
                    List<string> bodegas = servidor.ConsultarEmpresa(3, empresa).ToList();
                    ddlArticulo.DataSource = articulos;
                    ddlArticulo.DataBind();

                    ddlBodega.DataSource = bodegas;
                    ddlBodega.DataBind();

                    ddlSocio.DataSource = socios;
                    ddlSocio.DataBind();

                    datos.Columns.Add(new DataColumn("Artículo", typeof(string)));
                    datos.Columns.Add(new DataColumn("Bodega", typeof(string)));
                    datos.Columns.Add(new DataColumn("Impuesto", typeof(float)));
                    datos.Columns.Add(new DataColumn("Cantidad", typeof(int)));
                    datos.Columns.Add(new DataColumn("Precio Compra", typeof(float)));
                    datos.Columns.Add(new DataColumn("Subtotal", typeof(float)));

                    DateTime fecha = DateTime.Now;
                    Label4.Text = fecha.Day.ToString() + "/" + fecha.Month.ToString() + "/" + fecha.Year.ToString();

                    List<string> listOfNames = servidor.Obtener_Cuentas(false, Session["NombreEmpresaUsuario"].ToString()).ToList();
                    for (int i = 0; i < listOfNames.Count(); i++)
                        listOfNames[i] = listOfNames[i].Split(';')[0] + ";" + listOfNames[i].Split(';')[1];
                    DropDownList3.DataSource = listOfNames;
                    DropDownList3.DataBind();

                }
            }

        }

        protected void crearFactura(object sender, EventArgs e)
        {
            String NombreSocio = ddlSocio.SelectedItem.Text;
            String FechaContabilización = Label4.Text;
            String FechaEntrega = fechaEntrega.Text;
            Double TotalAntesImpuesto = Convert.ToDouble(Label1.Text);
            Double MontoImpuesto = Convert.ToDouble(Label2.Text);
            Double Total = Convert.ToDouble(Label3.Text);
            String Descripcion = TextBox1.Text;
            String TipoDocumento = DropDownList2.SelectedItem.Text;
            String ReferenciaOtroDocumento = docPrevio.Text;

            List<String> ListaLineasDocumento = new List<String>();

            servidor.Crear_Documento(NombreSocio, FechaContabilización, FechaEntrega, TotalAntesImpuesto, MontoImpuesto, Total, Descripcion,
            TipoDocumento, ReferenciaOtroDocumento, Session["NombreEmpresaUsuario"].ToString(), CheckBox1.Checked, DropDownList3.SelectedItem.Text);

            insertarFilasEnDocumento();

        }

        protected void cargarDocumento(object sender, EventArgs e)
        {
            String codDoc = docPrevio.Text;
            List<String> ListaFilas = servidor.Cargar_Documento(codDoc, Session["NombreEmpresaUsuario"].ToString()).ToList();

            Double SumaSubtotales = 0;
            foreach (var fila in ListaFilas)
            {
                SumaSubtotales = Convert.ToDouble(fila.Split(';')[5]);
                ListBox1.Items.Add(fila);
            }

            ddlArticulo.Enabled = false;
            ddlBodega.Enabled = false;
            TextBox2.Enabled = false;
            cantidad.Enabled = false;
            compra.Enabled = false;
            Button1.Enabled = false;

            Label1.Text = SumaSubtotales.ToString();
        }

        

        protected void agregarLineaDoc(object sender, EventArgs e)
        {
            String articulo = ddlArticulo.SelectedValue.ToString();
            String bodega = ddlBodega.SelectedValue.ToString();
            String vImpuesto = TextBox2.Text;
            String vCantidad = cantidad.Text;
            String vPrecioCompra = compra.Text;

            Double subtotal = Convert.ToDouble(vCantidad) * Convert.ToDouble(vPrecioCompra);
            Double impuesto = subtotal * Convert.ToDouble(vImpuesto);
            Double subtotal_impuesto = subtotal + impuesto;
            String LineaDocumento = articulo + ";" + bodega + ";" + vImpuesto + ";" + vCantidad + ";" + vPrecioCompra + ";" + subtotal_impuesto;

            Double TotalAntesImpuesto = Convert.ToDouble(Label1.Text) + subtotal;
            Double MontoImpuesto = Convert.ToDouble(Label2.Text) + impuesto;
            Double Total = Convert.ToDouble(Label3.Text) + subtotal_impuesto;

            Label1.Text = TotalAntesImpuesto.ToString();
            Label2.Text = MontoImpuesto.ToString();
            Label3.Text = Total.ToString();

            ListBox1.Items.Add(LineaDocumento);
        }

        protected void insertarFilasEnDocumento()
        {
            foreach (var fila_documento in ListBox1.Items)
            {
                servidor.Agregar_FilaDocumento(fila_documento.ToString(), Session["NombreEmpresaUsuario"].ToString(), CheckBox1.Checked, DropDownList3.SelectedItem.Text, "Orden de Compra", docPrevio.Text);
            }
        }
    }

}